
#Область ОписаниеПеременных

&НаКлиенте
Перем мЗакрытьФормуБезВопросов;

&НаКлиенте
Перем мТекСтрокаТаблицыРегистров;

&НаКлиенте
Перем мТекСтрокаТаблицыРегистровСтарая;

&НаКлиенте
Перем мПоследнийUUID;

#КонецОбласти

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	мОбъектСсылка = Параметры.мОбъектСсылка;
	мОбъектСсылкаПредыдущий = Неопределено;

	ПутьКФормам = вПолучитьОбработку().Метаданные().ПолноеИмя() + ".Форма.";

	_БыстрыйВызовСервера = Истина;
	_ПриЗаполненииОбрабатыватьТолькоВыделенныеСтроки = Истина;
КонецПроцедуры

&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
	Если мЗакрытьФормуБезВопросов = Истина Или _ЗадаватьВопросПриЗакрытии = Ложь Тогда
		Возврат;
	КонецЕсли;

	Если _ТабРегистры.НайтиСтроки(Новый Структура("Изменен", Истина)).Количество() <> 0 Тогда
		Если ЗавершениеРаботы = Неопределено Тогда
			// для старых версии платформы
			Отказ = Истина;
			вПоказатьВопрос("вЗакрытьФорму", "Редактор движений будет закрыт. Продолжить?");
			Возврат;
		КонецЕсли;

		Если ЗавершениеРаботы = Ложь Тогда
			Отказ = Истина;
			вПоказатьВопрос("вЗакрытьФорму", "Редактор движений будет закрыт. Продолжить?");
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	мТекСтрокаТаблицыРегистров = Неопределено;
	мТекСтрокаТаблицыРегистровСтарая = Неопределено;

	ПодключитьОбработчикОжидания("вПослеОткрытия", 0.1, Истина);
КонецПроцедуры




#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура мОбъектСсылкаПриИзменении(Элемент)
	_Обновить(Неопределено);
КонецПроцедуры

&НаКлиенте
Процедура мОбъектСсылкаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	ДоступныеНаборыТипов = УИ_ОбщегоНазначенияКлиентСервер.ДоступныеНаборыТиповДляРедактирования();
	
	ПараметрыОбработчика = УИ_ОбщегоНазначенияКлиент.НовыйПараметрыОбработчикаСобытияНачалоВыбораЗначения(ЭтотОбъект,
																										  Элемент,
																										  "мОбъектСсылка");
	ПараметрыОбработчика.ДоступенКонтейнер = Ложь;
	ПараметрыОбработчика.Значение = мОбъектСсылка;
	ПараметрыОбработчика.СтруктураХраненияЗначения = ЭтотОбъект;
	ПараметрыОбработчика.НаборТипов = ДоступныеНаборыТипов.Ссылки;
	ПараметрыОбработчика.ОповещениеОЗавершении = Новый ОписаниеОповещения("мОбъектСсылкаНачалоВыбораЗавершениеВыбораЗначения",
		ЭтотОбъект);

	УИ_ОбщегоНазначенияКлиент.ПолеФормыОбработчикНачалоВыбораЗначения(ПараметрыОбработчика, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура мОбъектСсылкаОчистка(Элемент, СтандартнаяОбработка)
	ПараметрыОбработчика = УИ_ОбщегоНазначенияКлиент.НовыйПараметрыОбработчикаСобытияОчистка(ЭтотОбъект,
																							 Элемент,
																							 "мОбъектСсылка");
	ПараметрыОбработчика.ДоступенКонтейнер = Ложь;
	ПараметрыОбработчика.СтруктураХраненияЗначения = ЭтотОбъект;

	УИ_ОбщегоНазначенияКлиент.ПолеФормыОбработчикОчистка(ПараметрыОбработчика, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура _ЗначениеДляЗаполненияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	ПараметрыОбработкиСобытия = УИ_ОбщегоНазначенияКлиент.НовыйПараметрыОбработчикаСобытияНачалоВыбораЗначения(ЭтотОбъект,
																											   Элемент,
																											   "_ЗначениеДляЗаполнения");
																											   
	ПараметрыОбработкиСобытия.ДоступенКонтейнер = Ложь;																											   
	ПараметрыОбработкиСобытия.Значение = _ЗначениеДляЗаполнения;
	ПараметрыОбработкиСобытия.СтруктураХраненияЗначения = ЭтотОбъект;
	
	УИ_ОбщегоНазначенияКлиент.ПолеФормыОбработчикНачалоВыбораЗначения(ПараметрыОбработкиСобытия, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура _ЗначениеДляЗаполненияОчистка(Элемент, СтандартнаяОбработка)
	ПараметрыОбработкиСобытия = УИ_ОбщегоНазначенияКлиент.НовыйПараметрыОбработчикаСобытияОчистка(ЭтотОбъект,
																								  Элемент,
																								  "_ЗначениеДляЗаполнения");

	ПараметрыОбработкиСобытия.ДоступенКонтейнер = Ложь;																											   
	ПараметрыОбработкиСобытия.СтруктураХраненияЗначения = ЭтотОбъект;

	УИ_ОбщегоНазначенияКлиент.ПолеФормыОбработчикОчистка(ПараметрыОбработкиСобытия, СтандартнаяОбработка);
КонецПроцедуры



#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормы_ТабРегистры

&НаКлиенте
Процедура _ТабРегистрыПриАктивизацииСтроки(Элемент)
	ТекСтрока = Элемент.ТекущаяСтрока;
	Если ТекСтрока <> мТекСтрокаТаблицыРегистров Тогда
		мТекСтрокаТаблицыРегистровСтарая = мТекСтрокаТаблицыРегистров;
		мТекСтрокаТаблицыРегистров = ТекСтрока;
		ПодключитьОбработчикОжидания("вПриАктивизацииСтрокиТаблицыРегистров", 0.1, Истина);
	КонецЕсли;
КонецПроцедуры


#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыНаборЗаписей

&НаКлиенте
Процедура Подключаемый_НаборЗаписейПриИзменении(Элемент)
	ТекДанные = Элементы._ТабРегистры.ТекущиеДанные;
	Если ТекДанные <> Неопределено Тогда
		ТекДанные.Изменен = Истина;
		ТекДанные.Записать = Истина;
		ТекДанные.ЧислоЗаписей = ЭтаФорма[Элемент.Имя].Количество();
		ТекДанные.ЕстьЗаписи = (ТекДанные.ЧислоЗаписей <> 0);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_НаборЗаписейРеквизитНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	ТаблицаФормыЭлемента = Элемент.Родитель;
		
	ТекДанные = ТаблицаФормыЭлемента.ТекущиеДанные;
	Если ТекДанные = Неопределено Тогда
		ВозвраТ;
	КонецЕсли;
	ИмяКолонки = Сред(Элемент.Имя, СтрДлина(ТаблицаФормыЭлемента.Имя) + 2);
	

	ПараметрыОбработчика = УИ_ОбщегоНазначенияКлиент.НовыйПараметрыОбработчикаСобытияНачалоВыбораЗначения(ЭтотОбъект,
																										  Элемент,
																										  ИмяКолонки);

	ПараметрыОбработчика.ДоступенКонтейнер = Ложь;
	ПараметрыОбработчика.СтруктураХраненияЗначения = ТекДанные;
	ПараметрыОбработчика.Значение = ТекДанные[ИмяКолонки];
	ПараметрыОбработчика.ТекущееОписаниеТиповЗначения = Элемент.ДоступныеТипы;
	
	УИ_ОбщегоНазначенияКлиент.ПолеФормыОбработчикНачалоВыбораЗначения(ПараметрыОбработчика, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_НаборЗаписейРеквизитОчистка(Элемент, СтандартнаяОбработка)
	ТаблицаФормыЭлемента = Элемент.Родитель;
		
	ТекДанные = ТаблицаФормыЭлемента.ТекущиеДанные;
	Если ТекДанные = Неопределено Тогда
		ВозвраТ;
	КонецЕсли;
	ИмяКолонки = Сред(Элемент.Имя, СтрДлина(ТаблицаФормыЭлемента.Имя) + 2);

	ПараметрыОбработчика = УИ_ОбщегоНазначенияКлиент.НовыйПараметрыОбработчикаСобытияОчистка(ЭтотОбъект,
																							 Элемент,
																							 ИмяКолонки);

	ПараметрыОбработчика.ДоступенКонтейнер = Ложь;
	ПараметрыОбработчика.СтруктураХраненияЗначения = ТекДанные;
	ПараметрыОбработчика.ТекущееОписаниеТиповЗначения = Элемент.ДоступныеТипы;

	УИ_ОбщегоНазначенияКлиент.ПолеФормыОбработчикОчистка(ПараметрыОбработчика, СтандартнаяОбработка);
КонецПроцедуры


#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура _ОткрытьВНовомОкне(Команда)
	СтрукПарам = Новый Структура("ПутьКФормам, мОбъектСсылка", ПутьКФормам, мОбъектСсылка);
	ОткрытьФорму("Обработка.УИ_РедакторРеквизитовОбъекта.Форма.ФормаРедакторДвижений", СтрукПарам, , ТекущаяДата(), , ,
		, РежимОткрытияОкнаФормы.Независимый);
КонецПроцедуры

&НаКлиенте
Процедура _Обновить(Команда)
	мТекСтрокаТаблицыРегистров = Неопределено;
	мТекСтрокаТаблицыРегистровСтарая = Неопределено;

	вОчиститьНаборыЗаписей();

	вОбновить();

	Элементы.ГруппаРегистры.Заголовок = "Движения документа (" + _ТабРегистры.Количество() + ")";
КонецПроцедуры

&НаКлиенте
Процедура _Записать(Команда)
	Если Не вПроверитьРегистратора() Тогда
		Возврат;
	КонецЕсли;

	Значение = _ТабРегистры.НайтиСтроки(Новый Структура("Записать", Истина)).Количество();
	Если Значение = 0 Тогда
		вПоказатьПредупреждение("Не отмечены регистры для записи.");
		Возврат;
	КонецЕсли;

	вПоказатьВопрос("_ЗаписатьДалее", СтрШаблон("Отмеченные регистры (%1 шт) будут записаны в базу. Продолжить?",
		Значение));
КонецПроцедуры

&НаКлиенте
Процедура _СортироватьРегистрыСтандартно(Команда)
	_ТабРегистры.Сортировать("Изменен УБЫВ, Записать УБЫВ, ЧислоЗаписей УБЫВ, ПолноеИмя");
КонецПроцедуры

&НаКлиенте
Процедура _СнятьФлажки(Команда)
	Для Каждого Стр Из _ТабРегистры.НайтиСтроки(Новый Структура("Записать", Истина)) Цикл
		Стр.Записать = Ложь;
	КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура _УстановитьФлажки(Команда)
	Для Каждого Стр Из _ТабРегистры.НайтиСтроки(Новый Структура("Записать", Ложь)) Цикл
		Стр.Записать = Истина;
	КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура _УстановитьФлажкиДляИзмененных(Команда)
	Для Каждого Стр Из _ТабРегистры.НайтиСтроки(Новый Структура("Записать, Изменен", Ложь, Истина)) Цикл
		Стр.Записать = Истина;
	КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура _ОчиститьДвижения(Команда)
	Если Не вПроверитьРегистратора() Тогда
		Возврат;
	КонецЕсли;

	Значение = Элементы._ТабРегистры.ВыделенныеСтроки;
	Если Значение.Количество() = 0 Тогда
		вПоказатьПредупреждение("Не отмечены регистры для очистки.");
		Возврат;
	КонецЕсли;

	вПоказатьВопрос("_ОчиститьДвиженияДалее", СтрШаблон("Выбранные регистры (%1 шт) будут очищены. Продолжить?",
		Значение.Количество()));
КонецПроцедуры

&НаКлиенте
Процедура _ОбновитьНабор(Команда)
	ТекДанные = Элементы._ТабРегистры.ТекущиеДанные;
	Если ТекДанные <> Неопределено Тогда
		ИмяРеквизита = вПолучитьИмяРеквизита(ТекДанные.ПолноеИмя);

		Если _БыстрыйВызовСервера Тогда
			Массив = вПрочитатьНаборЗаписейВКоллекцию(мОбъектСсылка, ТекДанные.ВидРегистра, ТекДанные.Имя);

			Коллекция = ЭтаФорма[ИмяРеквизита];
			Коллекция.Очистить();

			Для Каждого Элем Из Массив Цикл
				ЗаполнитьЗначенияСвойств(Коллекция.Добавить(), Элем);
			КонецЦикла;
		Иначе
			вОбновитьНаборЗаписей(ТекДанные.ВидРегистра, ТекДанные.Имя);
		КонецЕсли;

		ТекДанные.Изменен = Ложь;
		ТекДанные.Записать = Ложь;
		ТекДанные.ЧислоЗаписей = ЭтаФорма[ИмяРеквизита].Количество();
		ТекДанные.ЕстьЗаписи = (ТекДанные.ЧислоЗаписей <> 0);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура _ЗаписатьНабор(Команда)
	Если Не вПроверитьРегистратора() Тогда
		Возврат;
	КонецЕсли;

	ТекДанные = Элементы._ТабРегистры.ТекущиеДанные;
	Если ТекДанные = Неопределено Тогда
		вПоказатьПредупреждение("Не задан набор записей для сохранения");
		Возврат;
	КонецЕсли;
	вПоказатьВопрос("_ЗаписатьНаборДалее", "Набор записей будет записан в базу. Продолжить?");
КонецПроцедуры

&НаКлиенте
Процедура _ПереключитьАктивностьЗаписей(Команда)
	ТекДанные = Элементы._ТабРегистры.ТекущиеДанные;
	Если ТекДанные <> Неопределено Тогда
		ИмяРеквизита = вПолучитьИмяРеквизита(ТекДанные.ПолноеИмя);
		Если ЭтаФорма[ИмяРеквизита].Количество() <> 0 Тогда

			Для Каждого Стр Из ЭтаФорма[ИмяРеквизита] Цикл
				Стр.Активность = Не Стр.Активность;
			КонецЦикла;

			Подключаемый_НаборЗаписейПриИзменении(Элементы[ИмяРеквизита]);
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура _ОткрытьОбъект(Команда)
	ТекДанные = Элементы._ТабРегистры.ТекущиеДанные;
	Если ТекДанные <> Неопределено Тогда
		ИмяРеквизита = вПолучитьИмяРеквизита(ТекДанные.ПолноеИмя);
		ТекТаб = ЭтаФорма[ИмяРеквизита];

		Если ТекТаб.Количество() > 0 Тогда
			ТекТабЭФ = Элементы[ИмяРеквизита];
			ТекПолеЭФ = ТекТабЭФ.ТекущийЭлемент;

			пПоле = Сред(ТекПолеЭФ.Имя, СтрДлина(ИмяРеквизита) + 2);
			Значение = ТекТабЭФ.ТекущиеДанные[пПоле];

			Если ЗначениеЗаполнено(Значение) Тогда

				Если ТипЗнч(Значение) = Тип("ХранилищеЗначения") Тогда
					вПоказатьЗначениеХЗ(Значение);

				ИначеЕсли вЭтоОбъектМетаданных(ТипЗнч(Значение)) Тогда
					УИ_ОбщегоНазначенияКлиент.РедактироватьОбъект(Значение);

				КонецЕсли;

			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура _ПоказатьТипЗначения(Команда)
	_ТипЗначенияТекущегоПоля = "";

	Значение = Неопределено;

	ТекДанные = Элементы._ТабРегистры.ТекущиеДанные;
	Если ТекДанные <> Неопределено Тогда
		ИмяРеквизита = вПолучитьИмяРеквизита(ТекДанные.ПолноеИмя);
		ТекТаб = ЭтаФорма[ИмяРеквизита];

		Если ТекТаб.Количество() > 0 Тогда
			ТекТабЭФ = Элементы[ИмяРеквизита];
			ТекПолеЭФ = ТекТабЭФ.ТекущийЭлемент;

			пПоле = Сред(ТекПолеЭФ.Имя, СтрДлина(ИмяРеквизита) + 2);
			Значение = ТекТабЭФ.ТекущиеДанные[пПоле];

		КонецЕсли;
	КонецЕсли;

	Если Значение = Неопределено Тогда
		ИмяТипа = "Неопределено";
	Иначе
		ИмяТипа = вСформироватьИмяТипаПоЗначению(Значение);
	КонецЕсли;

	_ТипЗначенияТекущегоПоля = ИмяТипа;
КонецПроцедуры

&НаКлиенте
Процедура _ЗаполнитьДанныеТекущейКолонки(Команда)
	ТекДанные = Элементы._ТабРегистры.ТекущиеДанные;
	Если ТекДанные <> Неопределено Тогда
		ИмяРеквизита = вПолучитьИмяРеквизита(ТекДанные.ПолноеИмя);
		ТекТаб = ЭтаФорма[ИмяРеквизита];

		Если ТекТаб.Количество() > 0 Тогда

			пЗначение = _ЗначениеДляЗаполнения;

			ТекДанные.Записать = Истина;
			ТекДанные.Изменен = Истина;

			ТекТабЭФ = Элементы[ИмяРеквизита];
			ТекПолеЭФ = ТекТабЭФ.ТекущийЭлемент;

			пПоле = Сред(ТекПолеЭФ.Имя, СтрДлина(ИмяРеквизита) + 2);

			Если _ПриЗаполненииОбрабатыватьТолькоВыделенныеСтроки Тогда
				Для Каждого Элем Из ТекТабЭФ.ВыделенныеСтроки Цикл
					Стр = ТекТаб.НайтиПоИдентификатору(Элем);
					Стр[пПоле] = пЗначение;
				КонецЦикла;
			Иначе
				Для Каждого Стр Из ТекТаб Цикл
					Стр[пПоле] = пЗначение;
				КонецЦикла;
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура _ЗагрузитьДвиженияДругогоДокумента(Команда)
	Если Не вПроверитьРегистратора() Тогда
		Возврат;
	КонецЕсли;

	СтрукПарам = Новый Структура("ЗакрыватьПриЗакрытииВладельца, ПереченьРазделов", Истина, "Документы");
	ОткрытьФорму("ОбщаяФорма.УИ_ФормаВыбораТипаОбъекта", СтрукПарам, ЭтаФорма, , , , ,
		РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры

&НаКлиенте
Процедура _ВставитьУникальныйИдентификатор(Команда)
	ТекТаблица = ЭтаФорма.ТекущийЭлемент;

	Если ТекТаблица.Имя = "_ЗначениеДляЗаполнения" Тогда
		пСтрук = Новый Структура("Таблица", ТекТаблица.Имя);
		ПоказатьВводСтроки(Новый ОписаниеОповещения("вОбработатьВвод_UUID", ЭтаФорма, пСтрук), мПоследнийUUID,
			"Введите уникальный идентификатор", , Ложь);
		Возврат;
	ИначеЕсли ТипЗнч(ТекТаблица) <> Тип("ТаблицаФормы") Тогда
		Возврат;
	КонецЕсли;

	ТекКолонка = ТекТаблица.ТекущийЭлемент;
	Если ТекКолонка = Неопределено Или ТекКолонка.ТолькоПросмотр Тогда
		Возврат;
	КонецЕсли;

	Попытка
		пДоступныеТипы = ТекКолонка.ДоступныеТипы.Типы();
		Если пДоступныеТипы.Количество() <> 0 И пДоступныеТипы.Найти(Тип("УникальныйИдентификатор")) <> 0 Тогда
			Возврат;
		КонецЕсли;
	Исключение
	КонецПопытки;

	ТекДанные = Элементы[ТекТаблица.Имя].ТекущиеДанные;
	Если ТекДанные <> Неопределено Тогда
		пСтрук = Новый Структура("Таблица", ТекТаблица.Имя);

		пСтрук.Вставить("Поле", Сред(ТекКолонка.Имя, СтрДлина(ТекТаблица.Имя) + 2));

		ПоказатьВводСтроки(Новый ОписаниеОповещения("вОбработатьВвод_UUID", ЭтаФорма, пСтрук), мПоследнийUUID,
			"Введите уникальный идентификатор", , Ложь);
	КонецЕсли;
КонецПроцедуры


#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаКлиенте
Процедура мОбъектСсылкаНачалоВыбораЗавершениеВыбораЗначения(Результат, ДополнительныеПараметры) Экспорт
	_Обновить(Неопределено);
КонецПроцедуры


&НаКлиенте
Процедура вПоказатьПредупреждение(ТекстСообщения)
	ПоказатьПредупреждение( , ТекстСообщения, 20);
КонецПроцедуры

&НаКлиенте
Процедура вПоказатьВопрос(ИмяПроцедуры, ТекстВопроса, ДопПараметры = Неопределено)
	ПоказатьВопрос(Новый ОписаниеОповещения(ИмяПроцедуры, ЭтаФорма, ДопПараметры), ТекстВопроса,
		РежимДиалогаВопрос.ДаНетОтмена, 20);
КонецПроцедуры
&НаСервере
Функция вПолучитьОбработку()
	Возврат РеквизитФормыВЗначение("Объект");
КонецФункции

&НаКлиенте
Процедура вЗакрытьФорму(РезультатВопроса, ДопПараметры = Неопределено) Экспорт
	Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
		мЗакрытьФормуБезВопросов = Истина;
		ЭтаФорма.Закрыть();
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура вПослеОткрытия() Экспорт
	_Обновить(Неопределено);
КонецПроцедуры
&НаКлиенте
Функция вПроверитьРегистратора()
	Если Не ЗначениеЗаполнено(мОбъектСсылка) Тогда
		вПоказатьПредупреждение("Не задан объект для записи движений!");
		Возврат Ложь;
	КонецЕсли;

	Возврат Истина;
КонецФункции

&НаКлиенте
Процедура _ЗаписатьДалее(РезультатВопроса, ДопПараметры) Экспорт
	Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
		вЗаписать();
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура _ОчиститьДвиженияДалее(РезультатВопроса, ДопПараметры) Экспорт
	Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
		ВыделенныеСтроки = Элементы._ТабРегистры.ВыделенныеСтроки;
		Для Каждого Элем Из ВыделенныеСтроки Цикл
			СтрДанные = _ТабРегистры.НайтиПоИдентификатору(Элем);
			Если СтрДанные <> Неопределено Тогда
				ИмяРеквизита = вПолучитьИмяРеквизита(СтрДанные.ПолноеИмя);

				Попытка
					ТабДанные = ЭтаФорма[ИмяРеквизита];
					Если ТабДанные.Количество() <> 0 Тогда
						ТабДанные.Очистить();
						СтрДанные.Записать = Истина;
						СтрДанные.Изменен = Истина;
						СтрДанные.ЕстьЗаписи = Ложь;
						СтрДанные.ЧислоЗаписей = 0;
					КонецЕсли;
				Исключение
				КонецПопытки;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура _ЗаписатьНаборДалее(РезультатВопроса, ДопПараметры) Экспорт
	Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
		ТекДанные = Элементы._ТабРегистры.ТекущиеДанные;
		Если ТекДанные <> Неопределено Тогда
			Если вЗаписатьНаборЗаписей(ТекДанные.ВидРегистра, ТекДанные.Имя) Тогда
				_ОбновитьНабор(Неопределено);
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры


&НаКлиенте
Процедура вПоказатьЗначениеХЗ(Значение)
	СтрукПарам = Новый Структура("ПутьКФормам, ДанныеХЗ", ПутьКФормам, Значение);
	ОткрытьФорму("ОбщаяФорма.УИ_ФормаХранилищаЗначения", СтрукПарам, , ТекущаяДата());
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция вПолучитьИмяРеквизита(Знач ПолноеИмя)
	Возврат СтрЗаменить(ПолноеИмя, ".", "_");
КонецФункции

&НаКлиенте
Процедура вОчиститьНаборыЗаписей()
	Для Каждого Стр Из _ТабРегистры.НайтиСтроки(Новый Структура("ЕстьРеквизитФормы", Истина)) Цикл
		ИмяРеквизита = вПолучитьИмяРеквизита(Стр.ПолноеИмя);
		ЭтаФорма[ИмяРеквизита].Очистить();
		Стр.ЕстьЗаписи = Ложь;
		Стр.ЧислоЗаписей = 0;
	КонецЦикла;
КонецПроцедуры

&НаСервере
Процедура вУдалитьРеквизитыНаборовЗаписей()
	МассивКСозданию = Новый Массив;
	МассивКУдалению = Новый Массив;

	Для Каждого Стр Из _ТабРегистры.НайтиСтроки(Новый Структура("ЕстьРеквизитФормы", Истина)) Цикл
		ИмяРеквизита = вПолучитьИмяРеквизита(Стр.ПолноеИмя);

		Если вПроверитьНаличиеРеквизита(ИмяРеквизита) Тогда
			МассивКУдалению.Добавить(ИмяРеквизита);
		КонецЕсли;
		Стр.ЕстьРеквизитФормы = Ложь;

		ЭФ = Элементы.Найти("Стр_" + ИмяРеквизита);
		Если ЭФ <> Неопределено Тогда
			Элементы.Удалить(ЭФ);
		КонецЕсли;
	КонецЦикла;

	ИзменитьРеквизиты(МассивКСозданию, МассивКУдалению);
КонецПроцедуры

&НаСервереБезКонтекста
Функция вЭтоОбъектМетаданных(Знач Тип)
	ОбъектМД = Метаданные.НайтиПоТипу(Тип);
	Возврат (ОбъектМД <> Неопределено И Не Метаданные.Перечисления.Содержит(ОбъектМД));
КонецФункции

&НаСервереБезКонтекста
Функция вСформироватьИмяТипаПоЗначению(Знач Значение)
	пТип = ТипЗнч(Значение);

	ОбъектМД = Метаданные.НайтиПоТипу(пТип);
	Если ОбъектМД <> Неопределено Тогда
		ИмяТипа = ОбъектМД.ПолноеИмя();
	Иначе
		ИмяТипа = Строка(пТип);
	КонецЕсли;

	Возврат ИмяТипа;
КонецФункции

&НаСервереБезКонтекста
Функция вПрочитатьНаборЗаписей(Регистратор, ВидРегистра, ИмяРегистра)
	Набор = вСоздатьНаборЗаписей(Регистратор, ВидРегистра, ИмяРегистра);
	Набор.Прочитать();

	ТабРезультат = Набор.Выгрузить();

	Возврат ТабРезультат;
КонецФункции

&НаСервереБезКонтекста
Функция вСоздатьНаборЗаписей(Регистратор, ВидРегистра, ИмяРегистра)
	Если ВидРегистра = "РегистрСведений" Тогда
		Менеджер = РегистрыСведений[ИмяРегистра];
	ИначеЕсли ВидРегистра = "РегистрНакопления" Тогда
		Менеджер = РегистрыНакопления[ИмяРегистра];
	ИначеЕсли ВидРегистра = "РегистрРасчета" Тогда
		Менеджер = РегистрыРасчета[ИмяРегистра];
	ИначеЕсли ВидРегистра = "РегистрБухгалтерии" Тогда
		Менеджер = РегистрыБухгалтерии[ИмяРегистра];
	Иначе
		Менеджер = Неопределено;
	КонецЕсли;

	Набор = Менеджер.СоздатьНаборЗаписей();
	Набор.Отбор.Регистратор.Установить(Регистратор);

	Возврат Набор;
КонецФункции

&НаСервереБезКонтекста
Функция вПрочитатьНаборЗаписейВКоллекцию(Знач Регистратор, Знач ВидРегистра, Знач ИмяРегистра)
	ТабРезультат = вПрочитатьНаборЗаписей(Регистратор, ВидРегистра, ИмяРегистра);

	Струк = Новый Структура;

	Для Каждого Элем Из ТабРезультат.Колонки Цикл
		Струк.Вставить(Элем.Имя);
	КонецЦикла;

	Массив = Новый Массив;

	Для Каждого Стр Из ТабРезультат Цикл
		НС = Новый Структура;
		Для Каждого Элем Из Струк Цикл
			НС.Вставить(Элем.Ключ);
		КонецЦикла;

		ЗаполнитьЗначенияСвойств(НС, Стр);
		Массив.Добавить(НС);
	КонецЦикла;

	Возврат Массив;
КонецФункции

&НаСервере
Процедура вОбновитьНаборЗаписей(Знач ВидРегистра, Знач ИмяРегистра)
	ТабРезультат = вПрочитатьНаборЗаписей(мОбъектСсылка, ВидРегистра, ИмяРегистра);
	ЗначениеВРеквизитФормы(ТабРезультат, вПолучитьИмяРеквизита(ВидРегистра + "." + ИмяРегистра));
КонецПроцедуры

&НаСервере
Функция вЗаписатьНаборЗаписей(Знач ВидРегистра, Знач ИмяРегистра)
	Попытка
		ИмяРеквизита = вПолучитьИмяРеквизита(ВидРегистра + "." + ИмяРегистра);
		Набор = вСоздатьНаборЗаписей(мОбъектСсылка, ВидРегистра, ИмяРегистра);

		Если ЭтаФорма[ИмяРеквизита].Количество() <> 0 Тогда
			ТабРезультат = РеквизитФормыВЗначение(ИмяРеквизита);
			Набор.Загрузить(ТабРезультат);
		КонецЕсли;

		Если _ЗаписьВРежимеЗагрузки Тогда
			Набор.ОбменДанными.Загрузка = Истина;
		КонецЕсли;
		Набор.Записать();
	Исключение
		Сообщить(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
		Возврат Ложь;
	КонецПопытки;

	Возврат Истина;
КонецФункции

&НаСервере
Функция вЗаписать()
	НайденныеСтроки = _ТабРегистры.НайтиСтроки(Новый Структура("Записать", Истина));
	пЕстьТранзакция = (НайденныеСтроки.Количество() > 1);

	Если пЕстьТранзакция Тогда
		НачатьТранзакцию();
	КонецЕсли;

	Для Каждого Стр Из НайденныеСтроки Цикл
		Если Не вЗаписатьНаборЗаписей(Стр.ВидРегистра, Стр.Имя) Тогда
			Если пЕстьТранзакция Тогда
				ОтменитьТранзакцию();
				Возврат Ложь;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;

	Если пЕстьТранзакция Тогда
		ЗафиксироватьТранзакцию();
	КонецЕсли;

	Для Каждого Стр Из НайденныеСтроки Цикл
		ИмяРеквизита = вПолучитьИмяРеквизита(Стр.ПолноеИмя);

		вОбновитьНаборЗаписей(Стр.ВидРегистра, Стр.Имя);

		Стр.Изменен = Ложь;
		Стр.Записать = Ложь;
		Стр.ЧислоЗаписей = ЭтаФорма[ИмяРеквизита].Количество();
		Стр.ЕстьЗаписи = (Стр.ЧислоЗаписей <> 0);
	КонецЦикла;

	Возврат Истина;
КонецФункции
&НаСервереБезКонтекста
Функция вОписаниеТиповДляUUID(пОписаниеТипов)
	Если пОписаниеТипов.Типы().Количество() = 1 Тогда
		пНовоеОписаниеТипов = Новый ОписаниеТипов(пОписаниеТипов, "Строка");
	Иначе
		пНовоеОписаниеТипов = пОписаниеТипов;
	КонецЕсли;

	Возврат пНовоеОписаниеТипов;
КонецФункции

&НаСервере
Процедура вСоздатьРеквизитыНаборовЗаписей(НадоСоздаватьРеквизиты = Истина)
	ТипХЗ = Тип("ХранилищеЗначения");
	ТипТТ = Тип("Тип");
	ТипМВ = Тип("МоментВремени");
	ТипUUID = Тип("УникальныйИдентификатор");

	СоотвДанные = Новый Соответствие;

	МассивКСозданию = Новый Массив;
	МассивКУдалению = Новый Массив;

	Для Каждого Стр Из _ТабРегистры Цикл
		Стр.ЕстьРеквизитФормы = Истина;

		ИмяРеквизита = вПолучитьИмяРеквизита(Стр.ПолноеИмя);

		Если НадоСоздаватьРеквизиты Тогда
			МассивКСозданию.Добавить(Новый РеквизитФормы(ИмяРеквизита, Новый ОписаниеТипов("ТаблицаЗначений"), ,
				Стр.ПолноеИмя, Ложь));
		КонецЕсли;

		ТабРезультат = вПрочитатьНаборЗаписей(мОбъектСсылка, Стр.ВидРегистра, Стр.Имя);
		СоотвДанные.Вставить(ИмяРеквизита, ТабРезультат);

		Стр.ЧислоЗаписей = ТабРезультат.Количество();
		Стр.ЕстьЗаписи = (Стр.ЧислоЗаписей <> 0);
		Стр.Изменен = Ложь;
		Стр.Записать = Ложь;

		Если НадоСоздаватьРеквизиты Тогда
			Для Каждого Колонка Из ТабРезультат.Колонки Цикл
				Если Колонка.ТипЗначения.СодержитТип(ТипХЗ) Тогда
					ТипЗначенияРеквизита = Новый ОписаниеТипов;
				ИначеЕсли Колонка.ТипЗначения.СодержитТип(ТипТТ) Тогда
					ТипЗначенияРеквизита = Новый ОписаниеТипов;
				ИначеЕсли Колонка.ТипЗначения.СодержитТип(ТипМВ) Тогда
					ТипЗначенияРеквизита = Новый ОписаниеТипов;
				ИначеЕсли Колонка.ТипЗначения.СодержитТип(ТипUUID) Тогда
					ТипЗначенияРеквизита = вОписаниеТиповДляUUID(Колонка.ТипЗначения);
				Иначе
					ТипЗначенияРеквизита = Колонка.ТипЗначения;
				КонецЕсли;
				МассивКСозданию.Добавить(Новый РеквизитФормы(Колонка.Имя, ТипЗначенияРеквизита, ИмяРеквизита,
					Колонка.Заголовок, Ложь));
			КонецЦикла;
		КонецЕсли;

	КонецЦикла;

	Если НадоСоздаватьРеквизиты Тогда
		ИзменитьРеквизиты(МассивКСозданию, МассивКУдалению);
	КонецЕсли;

	_ТабРегистры.Сортировать("Изменен УБЫВ, ЧислоЗаписей УБЫВ, ПолноеИмя");
	
	// создание элементов формы
	СтрукСпецКолонки = Новый Структура("Регистратор, МоментВремени");

	Для Каждого Элем Из СоотвДанные Цикл
		ТабРезультат = Элем.Значение;
		ИмяРеквизита = СтрЗаменить(Элем.Ключ, ".", "_");

		ЗначениеВРеквизитФормы(Элем.Значение, Элем.Ключ);

		Если Не НадоСоздаватьРеквизиты Тогда
			Продолжить;
		КонецЕсли;

		НоваяСтраница = Элементы.Добавить("Стр_" + ИмяРеквизита, Тип("ГруппаФормы"), Элементы.СтраницыНаборыЗаписей);
		НоваяСтраница.Вид = ВидГруппыФормы.Страница;
		НоваяСтраница.Заголовок = "";
		НоваяСтраница.Видимость = Истина;

		ЭлемТЗ = ЭтаФорма.Элементы.Добавить(ИмяРеквизита, Тип("ТаблицаФормы"), НоваяСтраница);
		ЭлемТЗ.ПутьКДанным = ИмяРеквизита;
		ЭлемТЗ.УстановитьДействие("ПриИзменении", "Подключаемый_НаборЗаписейПриИзменении");

		Элем = ЭтаФорма.Элементы.Добавить("_" + ИмяРеквизита + "_ПереключитьАктивностьЗаписей", Тип("КнопкаФормы"),
			ЭлемТЗ.КоманднаяПанель);
		Элем.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели;
		Элем.ИмяКоманды = "_ПереключитьАктивностьЗаписей";

		Элем = ЭтаФорма.Элементы.Добавить("_" + ИмяРеквизита + "_ОткрытьОбъект", Тип("КнопкаФормы"),
			ЭлемТЗ.КоманднаяПанель);
		Элем.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели;
		Элем.ИмяКоманды = "_ОткрытьОбъект";

		Элем = ЭтаФорма.Элементы.Добавить("_" + ИмяРеквизита + "_ОбновитьНабор", Тип("КнопкаФормы"),
			ЭлемТЗ.КоманднаяПанель);
		Элем.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели;
		Элем.ИмяКоманды = "_ОбновитьНабор";

		Элем = ЭтаФорма.Элементы.Добавить("_" + ИмяРеквизита + "_ЗаписатьНабор", Тип("КнопкаФормы"),
			ЭлемТЗ.КоманднаяПанель);
		Элем.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели;
		Элем.ИмяКоманды = "_ЗаписатьНабор";

		ГруппаКнопок = Элементы.Добавить("Группа_" + ЭлемТЗ.Имя, Тип("ГруппаФормы"), ЭлемТЗ.КонтекстноеМеню);
		ГруппаКнопок.Вид = ВидГруппыФормы.ГруппаКнопок;

		Кнопка = Элементы.Добавить("_ВставитьУникальныйИдентификатор_" + ЭлемТЗ.Имя, Тип("КнопкаФормы"), ГруппаКнопок);
		Кнопка.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели;
		Кнопка.ИмяКоманды = "_ВставитьУникальныйИдентификатор";

		Для Каждого Колонка Из ТабРезультат.Колонки Цикл
			Если СтрукСпецКолонки.Свойство(Колонка.Имя) Тогда
				Продолжить;
			КонецЕсли;

			Элем = ЭтаФорма.Элементы.Добавить(ИмяРеквизита + "_" + Колонка.Имя, Тип("ПолеФормы"), ЭлемТЗ);
			Элем.ПутьКДанным = ИмяРеквизита + "." + Колонка.Имя;
			Элем.Вид = ВидПоляФормы.ПолеВвода;
			Элем.ДоступныеТипы = Колонка.ТипЗначения;
			Элем.КнопкаОчистки = Истина;
			Элем.КнопкаВыбора = Истина;
			
			Элем.УстановитьДействие("НачалоВыбора", "Подключаемый_НаборЗаписейРеквизитНачалоВыбора");
			Элем.УстановитьДействие("Очистка", "Подключаемый_НаборЗаписейРеквизитОчистка");
		КонецЦикла;
	КонецЦикла;
КонецПроцедуры

&НаСервере
Функция вПроверитьНаличиеРеквизита(ИмяРеквизита)
	Струк = Новый Структура(ИмяРеквизита);
	ЗаполнитьЗначенияСвойств(Струк, ЭтаФорма);

	Возврат (Струк[ИмяРеквизита] <> Неопределено);
КонецФункции

&НаСервере
Процедура вОбновить()
	НадоСоздаватьРеквизиты = (ТипЗнч(мОбъектСсылка) <> ТипЗнч(мОбъектСсылкаПредыдущий));

	мОбъектСсылкаПредыдущий = мОбъектСсылка;

	Если НадоСоздаватьРеквизиты Тогда
		вУдалитьРеквизитыНаборовЗаписей();

		_ТабРегистры.Очистить();

		мТекСтрокаТаблицыРегистров = Неопределено;

		Если мОбъектСсылка <> Неопределено Тогда
			ОбъектМД = мОбъектСсылка.Метаданные();
			_ПолноеИмяДокумента = ОбъектМД.ПолноеИмя();

			Для Каждого ОбъектРегистрМД Из ОбъектМД.Движения Цикл
				Если _ТабРегистры.НайтиСтроки(Новый Структура("Имя", ОбъектРегистрМД.Имя)).Количество() Тогда
					Продолжить;
				КонецЕсли;
								
				НС = _ТабРегистры.Добавить();
				НС.Имя = ОбъектРегистрМД.Имя;
				НС.Представление = ОбъектРегистрМД.Представление();
				НС.ПолноеИмя = ОбъектРегистрМД.ПолноеИмя();
				НС.ВидРегистра = Лев(НС.ПолноеИмя, СтрНайти(НС.ПолноеИмя, ".") - 1);
			КонецЦикла;
		КонецЕсли;

		_ТабРегистры.Сортировать("ПолноеИмя");
	КонецЕсли;

	вСоздатьРеквизитыНаборовЗаписей(НадоСоздаватьРеквизиты);
КонецПроцедуры

&НаКлиенте
Процедура вПриАктивизацииСтрокиТаблицыРегистров() Экспорт
	Если мТекСтрокаТаблицыРегистровСтарая <> Неопределено Тогда
		ТекДанные = _ТабРегистры.НайтиПоИдентификатору(мТекСтрокаТаблицыРегистровСтарая);
		Если ТекДанные <> Неопределено Тогда
			ИмяРеквизита = вПолучитьИмяРеквизита(ТекДанные.ПолноеИмя);
		КонецЕсли;
	КонецЕсли;

	ТекДанные = Неопределено;
	Если мТекСтрокаТаблицыРегистров <> Неопределено Тогда
		ТекДанные = _ТабРегистры.НайтиПоИдентификатору(мТекСтрокаТаблицыРегистров);
		Если ТекДанные <> Неопределено Тогда
			ИмяРеквизита = вПолучитьИмяРеквизита(ТекДанные.ПолноеИмя);
			Элементы.СтраницыНаборыЗаписей.ТекущаяСтраница = Элементы["Стр_" + ИмяРеквизита];
		КонецЕсли;
	КонецЕсли;

	Если ТекДанные = Неопределено Тогда
		Элементы.СтраницыНаборыЗаписей.ТекущаяСтраница = Элементы.СтрПример;
	КонецЕсли;
КонецПроцедуры

// загрузка движений из другого документа
&НаСервереБезКонтекста
Функция вПолучитьПериодРегистрации(ДокСсылка, ИмяТаблицы)
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("Ссылка", ДокСсылка);
	Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
				   |	АвансовыйОтчет.Дата КАК Дата
				   |ИЗ
				   |	" + ИмяТаблицы + " КАК АвансовыйОтчет
										 |ГДЕ
										 |	АвансовыйОтчет.Ссылка = &Ссылка";

	Выборка = Запрос.Выполнить().Выбрать();

	Возврат ?(Выборка.Следующий(), Выборка.Дата, Неопределено);
КонецФункции
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
	ПоказатьВводЗначения(Новый ОписаниеОповещения("вОбработатьВыборДокументаДляЗагрузкиДвижений", ЭтаФорма),
		ВыбранноеЗначение, "Документ для загрузки движений");
КонецПроцедуры

&НаКлиенте
Процедура вОбработатьВыборДокументаДляЗагрузкиДвижений(Значение, ДопПараметры = Неопределено) Экспорт
	Если Значение <> Неопределено Тогда
		вПоказатьВопрос("вЗагрузитьДвиженияИзДокумента",
			"Будут загружены движения из выбранного документа. Продолжить?", Значение);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура вЗагрузитьДвиженияИзДокумента(РезультатВопроса, ДокСсылка) Экспорт
	Если РезультатВопроса = КодВозвратаДиалога.Да И ЗначениеЗаполнено(ДокСсылка) Тогда
		Если вЗагрузитьДвиженияИзДокументаНаСервере(ДокСсылка) Тогда
			_СортироватьРегистрыСтандартно(Неопределено);
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

&НаСервере
Функция вЗагрузитьДвиженияИзДокументаНаСервере(ДокСсылка)
	пРезультат = Ложь;

	пДжвиженияПриемник = мОбъектСсылка.Метаданные().Движения;

	Для Каждого ЭлеметМД Из ДокСсылка.Метаданные().Движения Цикл
		Если пДжвиженияПриемник.Содержит(ЭлеметМД) Тогда
			пПолноеИмя = ЭлеметМД.ПолноеИмя();
			пВидРегистра = Лев(пПолноеИмя, СтрНайти(пПолноеИмя, ".") - 1);

			ТабДанные = вПрочитатьНаборЗаписей(ДокСсылка, пВидРегистра, ЭлеметМД.Имя);
			Если ТабДанные.Количество() <> 0 Тогда
				СтрукОсновное = Новый Структура("Период, Регистратор", вПолучитьПериодРегистрации(мОбъектСсылка,
					_ПолноеИмяДокумента), мОбъектСсылка);
				ИмяРеквизита = вПолучитьИмяРеквизита(пПолноеИмя);
				ТабНабор = ЭтаФорма[ИмяРеквизита];
				Для Каждого Стр Из ТабДанные Цикл
					НС = ТабНабор.Добавить();
					ЗаполнитьЗначенияСвойств(НС, Стр);
					ЗаполнитьЗначенияСвойств(НС, СтрукОсновное);
				КонецЦикла;

				Массив = _ТабРегистры.НайтиСтроки(Новый Структура("ПолноеИмя", пПолноеИмя));
				Если Массив.Количество() <> 0 Тогда
					СтрРегистр = Массив[0];
					СтрРегистр.Записать = Истина;
					СтрРегистр.Изменен = Истина;
					СтрРегистр.ЕстьЗаписи = Истина;
					СтрРегистр.ЧислоЗаписей = ТабНабор.Количество();
				КонецЕсли;

				пРезультат = Истина;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;

	Возврат пРезультат;
КонецФункции
&НаКлиенте
Процедура вОбработатьВвод_UUID(Строка, пСтрук = Неопределено) Экспорт
	Если Строка <> Неопределено И Не ПустаяСтрока(Строка) Тогда
		Попытка
			пЗначение = Новый УникальныйИдентификатор(Строка);
			мПоследнийUUID = Строка;
		Исключение
			ПоказатьПредупреждение( , "Значение не может быть преобразовано в Уникальный идентификатор!", 20);
			Возврат;
		КонецПопытки;

		Если пСтрук.Таблица = "_ЗначениеДляЗаполнения" Тогда
			_ЗначениеДляЗаполнения = пЗначение;
		Иначе
			ТекДанные = Элементы[пСтрук.Таблица].ТекущиеДанные;
			Если ТекДанные <> Неопределено Тогда
				ТекДанные[пСтрук.Поле] = пЗначение;

				ТекДанныеРег = Элементы._ТабРегистры.ТекущиеДанные;
				ТекДанныеРег.Записать = Истина;
				ТекДанныеРег.Изменен = Истина;
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

#КонецОбласти


